import axios from 'axios';

// 创建 axios 实例
const request = axios.create({
    //baseURL 之前参数名称写错过
    baseURL: '/api',  // 设置基础URL
    timeout: 10000      // 请求超时设置为1000毫秒（1秒）
});

// 请求拦截器
request.interceptors.request.use(
    config => {
        //讲 token  存储到  本地去
        // 在请求发送之前做一些处理，例如添加token
        const token = localStorage.getItem('token');  // 假设token存储在localStorage中
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`;  // 在请求头中添加token
        }
        // 可以在此修改请求参数
        // config.headers['Content-Type'] = 'application/json';  // 如果需要设置其他请求头
        return config;  // 返回配置以继续请求
    },
    error => {
        // 请求错误处理
        console.error('请求错误:', error);
        return Promise.reject(error);  // 请求错误时返回 Promise 的拒绝
    }
);

// 响应拦截器
// 响应拦截器
request.interceptors.response.use(
    response => {
        // 响应成功处理
        if (response.status === 200) {
            return response.data;
        }
        // 非200状态也交给调用方处理
        return Promise.reject(new Error('请求失败'));
    },
    error => {
        // 响应错误处理，不做全局跳转，只打印或处理信息
        if (error.response) {
            console.error('响应错误:', error.response.status);

            // 你可以选择记录日志或弹出提示，但不跳转页面
            // if (error.response.status === 401) {
            //     // 不再跳转登录页，交由业务代码决定是否跳转
            // }

        } else if (error.request) {
            console.error('请求未响应:', error.request);
        } else {
            console.error('其他错误:', error.message);
        }

        // 把错误传递给调用方，让调用方自己决定是否提示或处理
        return Promise.reject(error);
    }
);

export default request;

